#ifndef GROUPCHAT_H
#define GROUPCHAT_H

#include <QWidget>

// 群聊
#include <QTcpSocket>
#include <QTcpSocket>
#include <QListWidget>
#include <QTextEdit>
#include <QLineEdit>
#include <QPushButton>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QTimer>
namespace Ui {
class GroupChat;
}

class GroupChat : public QWidget
{
    Q_OBJECT

public:
    explicit GroupChat(QWidget *parent = nullptr);
    ~GroupChat();

private slots:
    void onConnected();
    void onReadyRead();
    //void sendData();
    void on_SendBtn_clicked();

    void on_CloseBtn_clicked();
    void appendMessage(const QString &sender, const QString &message, Qt::Alignment alignment, const QColor &textColor);
    void onError(QAbstractSocket::SocketError error);
    //void updateUserList(const QJsonArray &users); // 更新用户列表的槽函数
    void reconnect();
    void updateUserList(const QString &message);
private:
    Ui::GroupChat *ui;
    QTcpSocket *socket;
    QTimer reconnectTimer; // 用于重连的定时器
    int currentReconnectAttempt = 0; // 当前重连尝试次数
    const int maxReconnectAttempts = 5;// 最多重连尝试次数
};

#endif // GROUPCHAT_H
